#include "ioport.h"


/********************************************************************/
/****************************** Config ******************************/
/********************************************************************/
void IOport_RCC_Config()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
}

void IOport_GPIO_InPort_Config()
{
	GPIO_InitTypeDef  IOport_GPIO_InitStructure;
	
	IOport_GPIO_InitStructure.GPIO_Pin    =  GPIO_Pin_0 | GPIO_Pin_1;
	IOport_GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_IN_FLOATING;
	IOport_GPIO_InitStructure.GPIO_Speed  =  GPIO_Speed_2MHz;
	GPIO_Init(GPIOA, &IOport_GPIO_InitStructure);
	IOport_GPIO_InitStructure.GPIO_Pin    =  GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_12;
}

void IOport_GPIO_OutPort_Config()
{
	GPIO_InitTypeDef  IOport_GPIO_InitStructure;
	
	IOport_GPIO_InitStructure.GPIO_Pin    =  GPIO_Pin_6 | GPIO_Pin_7;
	IOport_GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_Out_PP;
	IOport_GPIO_InitStructure.GPIO_Speed  =  GPIO_Speed_2MHz;
	GPIO_Init(GPIOA, &IOport_GPIO_InitStructure);
	IOport_GPIO_InitStructure.GPIO_Pin    =  GPIO_Pin_6 | GPIO_Pin_7;
	IOport_GPIO_InitStructure.GPIO_Mode   =  GPIO_Mode_Out_PP;
	IOport_GPIO_InitStructure.GPIO_Speed  =  GPIO_Speed_2MHz;
	GPIO_Init(GPIOB, &IOport_GPIO_InitStructure);
}


/**********************************************************************/
/****************************** Function ******************************/
/**********************************************************************/
void IOport_Init_Config()
{
	IOport_RCC_Config();
	IOport_GPIO_InPort_Config();
	IOport_GPIO_OutPort_Config();
}

char Input_X1()
{
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) > 0)
		return 1;
	else 
		return 0;
}

char Input_X2()
{
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) > 0)
		return 1;
	else 
		return 0;
}

char Input_X3()
{
	if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) > 0)
		return 1;
	else 
		return 0;
}

char Input_X4()
{
	if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) > 0)
		return 1;
	else 
		return 0;
}

char Input_X5()
{
	if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) > 0)
		return 1;
	else 
		return 0;
}

void Output_Y1(char Switch)
{
	if(Switch == 0)
		GPIO_SetBits(GPIOB,GPIO_Pin_6);
	else 
		GPIO_ResetBits(GPIOB,GPIO_Pin_6);
}

void Output_Y2(char Switch)
{
	if(Switch == 0)
		GPIO_SetBits(GPIOB,GPIO_Pin_7);
	else 
		GPIO_ResetBits(GPIOB,GPIO_Pin_7);
}

void Output_Y3(char Switch)
{
	if(Switch == 0)
		GPIO_SetBits(GPIOA,GPIO_Pin_6);
	else 
		GPIO_ResetBits(GPIOA,GPIO_Pin_6);
}

void Output_Y4(char Switch)
{
	if(Switch == 0)
		GPIO_SetBits(GPIOA,GPIO_Pin_7);
	else 
		GPIO_ResetBits(GPIOA,GPIO_Pin_7);
}
